Skip to main content

Initialiser la base de données de l'application

Etape 1 : Assignation des permissions de l'utilisateur sur la base

Lors de la configuration de la base de données, il faut donner les droits de l'utilisateur sur la bonne base de données. Digital Ocean ne fait pas le nécessaire quand vous créez des utilisateurs ou des bases.

Pour exécuter ces requpetes, lancer un conteneur de pgadmin par exemple et connectez vous à la base de l'environnement cible, ici pour la base cam_portail_staging de l'environnement de staging, avec l'utilisateur do_admin (et uniquement ce compte admnistrateur) :

    -- Révoquer d'abord les privilèges excessifs si déjà accordés
REVOKE ALL PRIVILEGES ON DATABASE cam_portail_staging FROM cam_portail_staging;
REVOKE ALL ON SCHEMA public FROM cam_portail_staging;

-- Accès à la base (connexion + création de schémas si nécessaire)
GRANT CONNECT ON DATABASE cam_portail_staging TO cam_portail_staging;

-- Accès complet au schéma public (USAGE + CREATE pour les migrations)
GRANT USAGE, CREATE ON SCHEMA public TO cam_portail_staging;

-- Privilèges sur les tables existantes (lecture/écriture + DDL)
GRANT SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER ON ALL TABLES IN SCHEMA public TO cam_portail_staging;

-- Privilèges sur les séquences
GRANT USAGE, SELECT, UPDATE ON ALL SEQUENCES IN SCHEMA public TO cam_portail_staging;

-- Privilèges par défaut pour les futures tables
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER ON TABLES TO cam_portail_staging;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT USAGE, SELECT, UPDATE ON SEQUENCES TO cam_portail_staging;

-- Permettre de devenir owner des objets créés (pour ALTER/DROP)
GRANT cam_portail_staging TO postgres;

Etape 2 : Initialisation des tables (permissions des utilisateurs de l'application)

Le script de création des droits ABP est ici : insert_initial_configuration_data.sql Le mot de passe SMPT est a insérer également en base de données mais en passant par l'API SWAGGER de l'environnement concerné en réalisant la documentation suivante : Configuration SMTP

Appliquer les migrations Entity Framework sur la base de l'application

Les migrations de base de données se font lors de du CD avec l'exécution du DbMigrator. Le processus est le suivant :

  1. Ouverture du parefeu du serveur de base de données (uniquement accessible par les IPs whitelisté)
  2. Exécution du DbMigrator correspondant à la build qui sera déployée
  3. Fermture du parefeu du serveur de base de données (uniquement accessible par les IPs whitelisté)

Prérequis :

  • La variable de la chaine de connexion doit être correctement configuré dans le groupe de variables de l'environnement

image.png

Suppression des tables (en cas de migration non compatible par exemple)

⚠️ Cette opération supprime entièrement les données de la base de données, par conséquent vous devez savoir ce que vous faites avant ET FAIRE UNE SAUVEGARDE DE LA BASE AVANT !)

  1. Exécuter la requête suivante :
DROP SCHEMA public CASCADE;
CREATE SCHEMA public;
  1. Exécuter la requête de GRANT des droits de l'utilisateur de la DB sur la base de données (étape 1).
  2. Exécuter la requête de l'assignation des permissions (étape 2).

Migration de base de données entre environnement : ajout de domaine dans la table OpenIddictApplications

La table "OpenIddictApplications" possède des URLs à mettre à jour en fonction des environnements.

Pour chaque environnement il est nécessaire de mettre à jour ces URLs

Changer les URLS en effectuant la requête :

select * from public."OpenIddictApplications"

image.png